package com.zf.yichat.mapper;

import com.zf.yichat.base.FsMapper;
import com.zf.yichat.dto.UserLowerLevelDto;
import com.zf.yichat.dto.UserStg;
import com.zf.yichat.model.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserMapper extends FsMapper<User> {

    void addIntegral(@Param("score") Integer score, @Param("userId") Long userId);

    /**
     * 根据参数查询
     * @param recommendCode
     * @return
     */
    User queryUserByParam(@Param("recommendCode") String recommendCode, @Param("userId") Long userId);

    /**
     * 根据推荐码查询用户的上下级的推荐码
     * @param recommendCode --> ucode
     * @param paramRecommendCode --> recommendCode
     * @return
     */
    List<UserStg> queryUserSupAndSubByRecode(@Param("recommendCode") String recommendCode, @Param("paramRecommendCode") String paramRecommendCode);

    /**
     * 根据父级邀请码查询用户信息
     * @param recommendCode
     * @return
     */
    List<User> queryUserByRecommendCode(@Param("recommendCode") String recommendCode);

    /**
     * 查询用户昵称
     * @param userId
     * @return
     */
    String selectNickNameById(@Param("userId") Long userId);

    /**
     * 查询实名用户数量
     * @return
     */
    int selectRealCount();

    /**
     * 根据ucode查询用户下级
     * @param ucode
     * @return
     */
    List<User> queryLowerLevel(@Param("ucode") String ucode);

    /**
     * 根据ucode查询用户下级附带邀请人数量
     * @param ucode
     * @return
     */
    List<UserLowerLevelDto> queryLowerLevelAndCount(@Param("ucode") String ucode);

    /**
     * 根据父级邀请码查询当日邀请人数
     * @param recommendCode
     * @return
     */
    int queryInvitationsNumToday(@Param("recommendCode") String recommendCode);
}